package cz.vse.adventura.po1715.xskrz00_skrivankova.hra;


/*******************************************************************************
 * Knihovní třída {@code Texty} slouží jako schránka na textové konstanty,
 * které se používají na různýcm místech programu.
 * Centralizací definic těchto textových řetězců lze nejsnadněji dosáhnout toho,
 * že texty, které majuí být shodné na různých místech programu,
 * budou doopravdy shodné.
 *
 * @author    Rudolf PECINOVSKÝ
 * @version   0.00.000
 */
public class Texty
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================

    /** Jméno autora programu. */
    public static final String AUTOR = "PECINOVSKÝ Rudolf";

    /** X-name autora programu. */
    private static final String XNAME = "PECR999";

    public static final String //Příkazy
        pJDI    = "Jdi",
        pPOLOŽ  = "Polož",
        pVEZMI = "Vezmi",
        pKONEC  = "Konec",
        pHELP="?",
        p       = "PREFIX PŘÍKAZU",
        pSNĚZ   = "Sněz",
        pPOUŽIJ  = "Použij",
        pPROMLUV= "Promluv",
        pPŘEMÝŠLEJ="Přemýšlej"
        ;

    public static final String //Místnosti

        mOSLAVA             = "Oslava",
        mFOAYE              = "Foaye",
        mZAHRADA_DOMU       = "Zahrada_domu",
        mNORA               = "Nora",
        mPODZEMNI_ZAHRADA   = "Podzemni_zahrada",
        mVLEVO              = "Vlevo",
        mVPRAVO             = "Vpravo",
        mROVNE              = "Rovne",
        mHOUSENKA           = "Housenka",
        mKLOBOUCNIKUV_DUM   = "Kloboucnikuv_dum",
        mZAMECKA_ZAHRADA    = "Zamecka_zahrada",
        mZAMEK              = "Zamek",
        mVEZENI             = "Vezeni",
        m                   = "PREFIX MÍSTNOSTÍ"
        ;

    public static final String //Popisy (description) místností

        dOSLAVA             = "oslava narozenin",
        dFOAYE              = "foaye v dome",
        dZAHRADA_DOMU       = "zahrada u domu",
        dNORA               = "kralici nora",
        dPODZEMNI_ZAHRADA   = "zahrada ukryta za kralici norou",
        dVLEVO              = "cesta po pesine vlevo od zahrady, stale jdes zahradou",
        dVPRAVO             = "cesta po pesine vpravo od zahrady, stale jdes zahradou",
        dROVNE              = "cesta po pesine rovne od zahrady, stale jdes zahradou",
        dHOUSENKA           = "velika housenka na hoube",
        dKLOBOUCNIKUV_DUM   = "kloboucnikuv dum",
        dZAMECKA_ZAHRADA    = "zahrada u zamku",
        dZAMEK              = "veliky sal v zamku",
        dVEZENI             = "vezeni u zamku",
        d                   = "PREFIX POPISŮ MÍSTNOSTÍ"
        ;

    public static final String //Předměty

        oSVÍČKA     = "Svíčka",
        oPOHOVKA    = "Pohovka",
        oBAR        = "Bar",
        oSTEAK      = "Steak",
        oKVĚTINY    = "Květiny",
        oKRB        = "Krb",
        oSTOLEK     = "Stolek",
        oNOVINY     = "Noviny",
        oSTOLY      = "Stoly",
        oŽIDLE      = "Židle",
        oRAUTOVÝ_STŮL= "Rautový_stůl",
        oSKLENICE   = "Sklenice",
        oTALÍŘE     = "Talíře",
        oKRÁLÍK     = "Králík",
        oSTROMY     = "Stromy",
        oKEŘE       = "Keře",
        oLAHVIČKA   = "Lahvička",
        oDORTÍK     = "Dortík",
        oDVEŘE      = "Dveře",
        oKLÍČ       = "Klíč",
        oKLOBOUČNÍK = "Kloboučník",
        oHOUSENKA   = "Housenka",
        oKRÁLOVNA   = "Královna",
        oDRAK       = "Drak",
        oOHNIVÝ_PES = "Ohnivý_pes",
        oŠKLEB      = "Škleb",
        oTRŮN       = "Trůn",
        oMEČ        = "Meč",
        o         = "PREFIX OBJEKTŮ"
        ;

    public static final String 
            SOUSEDÉ  = "Sousedé:  ",
            PŘEDMĚTY = "Předměty: ",
            BATOH    = "Batoh:    ",
            FORMÁT_INFORMACE = "\n\nMístnost / prostor :  %s" +
                               "\n" + SOUSEDÉ  + "[%s]" +
                               "\n" + PŘEDMĚTY + "[%s]" +
                               "\n" + BATOH    + "[%s]";

    
    /** Texty zpráv vypisovaných v reakci na povinné příkazy.
     *  Pořáteční z (zpráva) slouží k odlišení od stavů. */
    public  static final String
    zANP            = "", //"\nZadaná akce nebyla provedena";
    zPORADÍM        = "\nChcete-li poradit, zadejte příkaz ?",
    zPRÁZDNÝ_PŘÍKAZ = "\nZadal(a) jste prázdný příkaz." + zPORADÍM,
    zNEZNÁMÝ_PŘÍKAZ = "\nTento příkaz neznám. " + zPORADÍM,

    zPŘESUN         = "\nPřesunul(a) jste se do místnosti / prostoru : ",
    zCIL_NEZADAN    = zANP + "\nNebyla zadána místnost, do níž se má přejít.",
    zNENÍ_CIL       = zANP + "\nDo zadané místnosti se odsud nedá přejít.",

    zZVEDNUTO       = "\nVzal(a) jste předmět: ",
    zPOLOŽENO       = "\nPoložil(a) jste předmět: ",
    zPŘEDMĚT_NEZADAN= zANP + "\nNebyla zadán předmět, s nímž mám manipulovat.",
    zTĚŽKÝ_PŘEDMĚT  = zANP + "\nZadaný předmět nejde zvednout: ",
    zNENÍ_PŘEDMĚT   = zANP + "\nZadaný předmět v místnosti není: ",
    zNENÍ_V_BATOHU  = zANP + "\nPředmět není v batohu: ",
    zBATOH_PLNÝ     = zANP + 
                      "\nZadaný předmět nemůžete vzít, máte už obě ruce plné.",

    zNÁPOVĚDA       = "\nPříkazy, které je možno v průběhu hry zadat:" +
                      "\n============================================",

    zUVÍTÁNÍ        =
        "\nAlenka je na oslavě svých rodičů. Všude je spousta nudných lidí." +
        "\nChjo, vůůbec mě to tu nebaví, kdyby tu aspoň bylo něco s čím bych si mohla hrát.",
            
    zCELÉ_UVÍTÁNÍ   = zUVÍTÁNÍ +
                      String.format(FORMÁT_INFORMACE,
                                    mOSLAVA, cm(mFOAYE, mZAHRADA_DOMU),
                      cm(oSTOLY,  oŽIDLE, oSTEAK), cm()),

    zKONEC         = "Konec hry. \nDěkujeme, že jste zkusil(a) naši hru.";

    /**Texty k příkazu přemýšlej**/
    
    public static final String
    iOSLAVA             = "Hele králík, kam asi jde, že bych šla za ním? A nevezmu si sebou něco?",
    iFOAYE              = "Krásná pohovka, že bych si schrupla ... Aaaa jsem tááák unavenááááá...",
    iZAHRADA_DOMU       = "Kam to ten králík leze?",
    iNORA               = "Mňam dortík. Klíč? Hmmm, ten by se mohl hodit.",
    iPODZEMNI_ZAHRADA   = "Juu, to je nadherna zahrada. A vedou tři cesty, někam se podívám.",
    iVLEVO              = "Kam to asi vede?",
    iVPRAVO             = "Kam to asi vede?",
    iROVNE              = "Kam to asi vede?",
    iHOUSENKA           = "Tady nic není. Že bych si aspoň pokecala?",
    iKLOBOUCNIKUV_DUM   = "Konečně jsem našla králíka. Že bych si pokecala s tím divným pánem?",
    iZAMECKA_ZAHRADA    = "Jůůů. Pravá královna. Že bych se šla představit?",
    iZAMEK              = "Jůůů. Pravá královna. Že bych se šla představit?",
    iVEZENI             = "To je ale rozzuřený pes. Třeba by se mu ulevilo s plným bříškem...";

    /** Texty zpráv vypisované v reakci na nepovinné příkazy. */
    
    public static final String
    rOHNIVY_PES_NAKRMEN =
        "\nOhnivý pes jí steak, že by se teď dal zvednout meč?",

    rOHNIVY_PES_NENAKRMEN =
        "\nOhnivý pes leží na meči. Nedal by se nějak zaměstnat?",

    rDVERE_ODEMCENY =
        "\nDveře jsou již odemčený.",

    rDVERE_ZAMCENY = 
         "\nDveře jsou zamčený.",
            
    rALENKA_ZMENSENA =
        "\nJeee. Jsem nějaká malinká.",

    rALENKA_ZVETSENA =
        "\nNeee, POMOC, co se to dějě???? Skoro se sem nevejdu !!!",

    rALENKA_NORMALNI =
        "\nUff, konečně zase normální.",
    
    rALENKA_ZMENSENA_ZMENSENA = 
         "\nMenší už opravdu nebudu.",
    
    rALENKA_ZVETSENA_ZVETSENA = 
         "\nVíc už to fakt nejde.",        
            
    rDVERE_ALENKA_ZVETSENA =
        "\nDveře jsou moc malinké.",

    rDVERE_ALENKA_NORMALNI =
        "\nDveře jsou moc malinké.",

    rKLIC_ALENKA_ZMENSENA =
        "\nAlenka je moc malá. Nedosáhne na stůl.",

    rKLIC_ALENKA_ZVETSENA =
        "\nKlíč je moc malinký. Nedokážu ho sebrat.",

    rVEZENI_DVERE_ZAMCENY =
        "\nDveře nejdou otevřít. Jsou zamčené, třeba je tu něco, čím by se dal zámek rozbít.",

    rVEZENI_DVERE_ODEMCENY =
        "\nZámek byl uražen mečem. Najednou můžeš projít.",

    rDRAK_PROBODNUT =
        "\nJejda, to je najednou roztomilý dráček. To už královna nebude ohrožovat zemi."
        + "\nTo jsem asi splnila úkol." 
        + "\nAlenko! ALENKO! Už se probudila. Omdlela jsi na oslavě, ale už je dobře."
        + "\nHru jsi úspěšně dokončil(a) a ukončíte ji příkazem konec.";


   //* Monology

    public static final String

            mlHOUSENKA  = "Hmm, kdo to tady je. Počkej, nic neříkej, pojď blíž."
                        + "\nTy jsi Alenka? No ano, to je přeci Alenka. Alenka, která zachrání"
                        + "\nnaši zemi. Utíkej rychle do zámku a zachraň náááás. UUUUáááá, já jdu zase uáááá spáááá",
            mlKLOBOUČNÍK= "Alenko, přivedli jsme Tě sem, protože jsi vyvolená."
                        + "Musíš zachránit naši zem. Vzpomeň si, jako malá sis s námi hrávala."
                        + "\nUtíkej do zámku, dostaň se do vězení a nakrm ohnivého psa."
                        + "\nPak mu můžes sebrat meč. Probodni draka a naše země bude zachráněna."
                        + "\nDo zámku se jde zahradou rovně.",
            mlKRÁLOVNA  = "KDO TO JE???? KDO SE OPOVAŽUJE MĚ RUŠIT??!!!??? KDO JSI???"
                        + "\nA KDE SES TU VZALA??? CO JE TO ZA HOLKU????!!! !!!??? !!!!"
                        + "\nJsi Alenka? Jsi Alenka co se vrátila? DO VĚZENÍ!!!! ZAVŘÍT!!!",
            mlŠKLEB     = "Dneska je krásně, co? Mám rád takovéhle slunce. Pozor ať mě nevidí královna"
                        + "\n, dala by mne stít. Ha, ptáš se, jak stít někoho bez hlavy?"
                        + "\nNaše královna může všechno. Každý druhý je tu o hlavu kratší. Pfff.";

//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

    /***************************************************************************
     * Vrátí řetězec obsahující zadané názvy oddělené čárkami.
     *
     * @param názvy Názvy, které je třeba sloučit
     * @return Výsledný řetězec ze sloučených zadaných názvů
     */
    public static String cm(String... názvy)
    {
        if (názvy.length == 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder(názvy[0]);
        for (int i=1;   i < názvy.length;   i++) {
            sb.append(", ").append(názvy[i]);
        }
        return sb.toString();
    }



//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /** Soukromý konstruktor zabraňující vytvoření instance.*/
    private Texty() {}



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        Texty inst = new Texty();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
